import { login, getUserInfoAPI, getUseravatarAPI } from '@/api/user'
import { setToken, getToken, removeToken } from '@/utils/auth'
export default {
  namespaced: true,
  state: {
    token: getToken() || '',
    userInfo: {}
  },
  mutations: {
    // 存入token
    changeToken(state, val) {
      state.token = val
      // 存入本地
      setToken(val)
    },
    // 存入用户信息
    changeUserInfo(state, userInfo) {
      state.userInfo = userInfo
    },
    // 清空token，用户信息，删除本地数据
    empty(state) {
      state.token = ''
      state.userInfo = {}
      removeToken()
    }
  },
  actions: {
    // 请求获取token
    async getToken(store, data) {
      const res = await login(data)
      store.commit('changeToken', res)
    },
    // 请求获取用户信息和头像
    async getUserInfo(store) {
      // 获取用户信息
      const res = await getUserInfoAPI()
      // 获取用户头像
      const res_ = await getUseravatarAPI(res.userId)
      // 将用户信息和头像信息合并，并保存到state得userInfo中
      store.commit('changeUserInfo', { ...res, ...res_ })
      return res
    }
  }
}
